//定义一个JS控制器 AMD require.js 模块化插件
//1、需要引入插件
//2、该控制器模块的业务逻辑
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {

  //定义一个控制器
  var Controller = {
    index: function () {
      //给选项卡绑定点击事件 切换选项卡的时候才会触发
      $(`a[data-toggle="tab"]`).on('shown.bs.tab', function () {
        // 同时拿到table表格里面订单和评论的href属性
        var tab = $($(this).attr('href'))
        if (tab.length <= 0) return; //为空就停下

        //两个选项卡，分别给两个不同的请求方法
        //根据锚点切换，然后来触发选项卡的方法
        Controller.table[tab.attr('id')].call(this)
      })

      // 一进来就调用ordertable
      Controller.table['subrecycle']()
    },
    // 两个表格分开来定义函数
    table: {
      // 课程订单回收站
      subrecycle: function () {

        // 初始化表格参数配置
        //配置整个表格中增删查改请求控制器地址，用的ajax的方式请求
        Table.api.init({
          extend: {
            subrecycle_url: 'subject/subrecycle/index', //课程订单回收站
            restore_url: 'subject/subrecycle/restore',
            destroy_url: 'subject/subrecycle/destroy',
            table: 'subject_order',
          }
        });

        //获取view视图里面的dom元素table元素
        var table = $("#SubRecycleTable")

        //渲染列表数据
        // $.ajax({
        table.bootstrapTable({
          url: $.fn.bootstrapTable.defaults.extend.subrecycle_url, //请求地址
          toolbar: "#SubRecycleToolbar", //工具栏
          pk: 'id', //默认主键字段名
          sortName: 'createtime', //排序的字段名
          sortOrder: 'desc', //排序的方式
          //渲染的数据部分
          //渲染的数据部分
          columns: [ //渲染的字段部分
            { checkbox: true },
            { field: 'id', title: 'ID', operate: false, sortable: true },
            { field: 'title', title: __('Titles'), operate: 'LIKE' },
            { field: 'category.name', title: __('Cateid') },
            {
              field: 'thumbs_text',
              title: __('Thumbs'),
              operate: false,
              formatter: Table.api.formatter.image
            },
            { field: 'price', title: __('Price'), operate: false, sortable: true },
            { field: 'likes_text', title: __('Likes'), operate: false },
            {
              field: 'createtime',
              title: __('CreateTime'),
              operate: 'RANGE',
              addclass: 'datetimerange',
              sortable: true,
              formatter: Table.api.formatter.datetime
            },
            {
              field: 'deletetime',
              title: __('Deletetime'),
              operate: 'RANGE',
              addclass: 'datetimerange',
              sortable: true,
              formatter: Table.api.formatter.datetime
            },
            //最后一排的操作按钮组
            {
              field: "operate",
              title: __('Operate'),
              table: table,
              events: Table.api.events.operate,
              formatter: Table.api.formatter.operate,
              buttons: [
                //定义自定义按钮
                {
                  name: 'restore', //跟table页面中绑定一样
                  title: '恢复',
                  icon: 'fa fa-circle-o-notch', //图标
                  classname: 'btn btn-xs btn-success btn-magic btn-ajax',
                  url: $.fn.bootstrapTable.defaults.extend.restore_url,
                  extend: "data-toggle='tooltip'",
                  confirm: "是否确认恢复数据",
                  success: function () {
                    //刷新表格
                    table.bootstrapTable('refresh')
                  }
                },
                {
                  name: 'destroy', //跟table页面中绑定一样
                  title: '销毁',
                  icon: 'fa fa-trash', //图标
                  classname: 'btn btn-xs btn-danger btn-magic btn-ajax',
                  url: $.fn.bootstrapTable.defaults.extend.destroy_url,
                  extend: "data-toggle='tooltip'",
                  confirm: "是否确认真实销毁数据",
                  success: function () {
                    //刷新表格
                    table.bootstrapTable('refresh')
                  }
                },
              ]
            }
          ]
        });

        //绑定按钮事件
        $("#SubRecycleToolbar .btn-restore").on('click', function () {
          //获取table勾选的id值
          var ids = Table.api.selectedids(table)

          //弹框
          layer.confirm(
            '是否确认恢复数据',
            { title: "恢复标题", btn: ['是', '否'] },
            function (index) {
              //发送ajax请求
              Backend.api.ajax(
                { url: $.fn.bootstrapTable.defaults.extend.restore_url + `?ids=${ids}` },
                () => {
                  //关闭弹框
                  layer.close(index)

                  //刷新表格
                  table.bootstrapTable('refresh')
                }
              )
            }
          )
        })

        $("#SubRecycleToolbar .btn-destroy").on('click', function () {
          //获取table勾选的id值
          var ids = Table.api.selectedids(table)

          //弹框
          layer.confirm(
            '是否确认真实删除数据',
            { title: "真实删除标题", btn: ['是', '否'] },
            function (index) {
              //发送ajax请求
              Backend.api.ajax(
                { url: $.fn.bootstrapTable.defaults.extend.destroy_url + `?ids=${ids}` },
                () => {
                  //关闭弹框
                  layer.close(index)

                  //刷新表格
                  table.bootstrapTable('refresh')
                }
              )
            }
          )
        })

        // 为表格绑定事件
        Table.api.bindevent(table);
      },

      // 课程订单回收站
      ordrecycle: function () {

        // 初始化表格参数配置
        //配置整个表格中增删查改请求控制器地址，用的ajax的方式请求
        Table.api.init({
          extend: {
            ordrecycle_url: 'subject/ordrecycle/index', //课程订单回收站
            restore_url: 'subject/ordrecycle/restore',
            destroy_url: 'subject/ordrecycle/destroy',
            table: 'subject_order',
          }
        });

        //获取view视图里面的dom元素table元素
        var table = $("#OrdRecycleTable")

        //渲染列表数据
        // $.ajax({
        table.bootstrapTable({
          url: $.fn.bootstrapTable.defaults.extend.ordrecycle_url, //请求地址
          toolbar: "#OrdRecycleToolbar", //工具栏
          pk: 'id', //默认主键字段名
          sortName: 'createtime', //排序的字段名
          sortOrder: 'desc', //排序的方式
          //渲染的数据部分
          columns: [ //渲染的字段部分
            /**
             *  sortable：是否开启排序
             *  operate：是否需要这个搜索栏
             */
            { checkbox: true },
            { field: 'id', title: 'ID', operate: false, sortable: true },
            { field: 'code', title: __('OrderCode'), operate: 'LIKE' },
            { field: 'total', title: __('OrderTotal'), operate: false, sortable: true },
            { field: 'business.nickname', title: __('BusinessNickname'), operate: 'LIKE' },
            {
              field: 'createtime',
              title: __('OrderTime'),
              operate: 'RANGE',
              addclass: 'datetimerange',
              sortable: true,
              formatter: Table.api.formatter.datetime
            },
            //最后一排的操作按钮组
            {
              field: "operate",
              title: __('Operate'),
              table: table,
              events: Table.api.events.operate,
              formatter: Table.api.formatter.operate,
              // 定义自定义按钮
              buttons: [
                // 恢复按钮
                {
                  // 跟table页面中绑定一样
                  name: 'restore',
                  title: '恢复',
                  icon: 'fa fa-circle-o',
                  classname: 'btn btn-xs btn-success btn-magic btn-ajax',
                  url: $.fn.bootstrapTable.defaults.extend.restore_url,
                  extend: "data-toggle='tooltip'",
                  confirm: '是否确认恢复数据',
                  success: function () {
                    // 刷新表格
                    table.bootstrapTable('refresh')
                  }
                },
                {
                  //跟table页面中绑定一样
                  name: 'destroy',
                  title: '销毁',
                  icon: 'fa fa-trash', //图标
                  classname: 'btn btn-xs btn-danger btn-magic btn-ajax',
                  url: $.fn.bootstrapTable.defaults.extend.destroy_url,
                  extend: "data-toggle='tooltip'",
                  confirm: "是否确认真实销毁数据",
                  success: function () {
                    //刷新表格
                    table.bootstrapTable('refresh')
                  }
                },
              ]
            }
          ]
        });

        //绑定按钮事件
        $("#OrdRecycleToolbar .btn-restore").on('click', function () {
          //获取table勾选的id值
          var ids = Table.api.selectedids(table)

          //弹框
          layer.confirm(
            '是否确认恢复数据',
            { title: "恢复标题", btn: ['是', '否'] },
            function (index) {
              //发送ajax请求
              Backend.api.ajax(
                { url: $.fn.bootstrapTable.defaults.extend.restore_url + `?ids=${ids}` },
                () => {
                  //关闭弹框
                  layer.close(index)

                  //刷新表格
                  table.bootstrapTable('refresh')
                }
              )
            }
          )
        })

        $("#OrdRecycleToolbar .btn-destroy").on('click', function () {
          //获取table勾选的id值
          var ids = Table.api.selectedids(table)

          //弹框
          layer.confirm(
            '是否确认真实删除数据',
            { title: "真实删除标题", btn: ['是', '否'] },
            function (index) {
              //发送ajax请求
              Backend.api.ajax(
                { url: $.fn.bootstrapTable.defaults.extend.destroy_url + `?ids=${ids}` },
                () => {
                  //关闭弹框
                  layer.close(index)

                  //刷新表格
                  table.bootstrapTable('refresh')
                }
              )
            }
          )
        })

        // 为表格绑定事件
        Table.api.bindevent(table);
      },
    },

    api: {
      //JS模块化的全局方法
      bindevent: function () {
        Form.api.bindevent($("form[role=form]"));
      }
    }
  }

  //模块返回值
  return Controller
})